#pragma once
#include <Rz/Object.h>

namespace Rz { namespace Graphics { namespace Math {

class Size :
	public Object
{
	public:
		RZ_RTTI(Rz::Graphics::Math, Size);
		RZ_RTTI_IMPLEMENTS(Object);
		RZ_RTTI_END;

		RZ_INLINE Size() { }
		RZ_INLINE Size(size_t size) : _width(size), _height(size) { }
		RZ_INLINE Size(size_t width, size_t height) : _width(width), _height(height) { }

		RZ_INLINE void Get(size_t* width, size_t* height) const { *width = _width; *height = _height; }
		RZ_INLINE void Get(size_t size[2]) const { size[0] = _width; size[1] = _height; }
		RZ_INLINE size_t GetWidth() const { return _width; }
		RZ_INLINE size_t GetHeight() const { return _height; }
		
		RZ_INLINE void Set(size_t width, size_t height) { _width = width; _height = height; }
		RZ_INLINE void SetWidth(size_t width) { _width = width; }
		RZ_INLINE void SetHeight(size_t height) { _height = height; }

	private:
		size_t _width;
		size_t _height;
};

} } }
